ClientDataSource

Otázka od: LUKES Václav

19. 9. 2002 15:14


Ahoj,

prosim vas o radu. Mam D6 a Win2000.
Mam toto spojeni:

SQLConnection
SQLDataSet
DataSetProvider
ClientDataSet
DataSource

Vse je pospojovano a vraci mi to data. Kdyz ale chci treba neco mazat a napisu
tohle:

ClientDataSource.Delete;
ClientDataSource.Post;



dostanu pri spusteni tuto hlasku:

...'ClientDataSource: dataset not in edit or insert mode.'


Kde nastavim onen EDIT ? V TQuery jsem nastavoval RequestLive, ale tady ???

Diky

V.

Odpovedá: Lstiburek Pavel

19. 9. 2002 16:56

K Delete neni Post.

Pavel

> Od: LUKES Václav [mailto:lukes@ans.cz]
> Ahoj,
>
> prosim vas o radu. Mam D6 a Win2000.
> Mam toto spojeni:
>
> SQLConnection
> SQLDataSet
> DataSetProvider
> ClientDataSet
> DataSource
>
> Vse je pospojovano a vraci mi to data. Kdyz ale chci treba
> neco mazat a napisu tohle:
>
> ClientDataSource.Delete;
> ClientDataSource.Post;
>
>
>
> dostanu pri spusteni tuto hlasku:
>
> ...'ClientDataSource: dataset not in edit or insert mode.'
>
>
> Kde nastavim onen EDIT ? V TQuery jsem nastavoval
> RequestLive, ale tady ???
>
> Diky
>
> V.
>

Odpovedá: Jiří Semler

19. 9. 2002 16:41

> Mam toto spojeni:
>
> SQLConnection
> SQLDataSet
> DataSetProvider
> ClientDataSet
> DataSource
>
> Vse je pospojovano a vraci mi to data. Kdyz ale chci treba neco mazat a
napisu tohle:
>
> ClientDataSource.Delete;
> ClientDataSource.Post;
>
> dostanu pri spusteni tuto hlasku:
>
> ...'ClientDataSource: dataset not in edit or insert mode.'
>
> Kde nastavim onen EDIT ? V TQuery jsem nastavoval RequestLive, ale tady ???

Zkus pouzit ClientDataSet.Edit;

Jirka

Odpovedá: Jan Sebelík

19. 9. 2002 18:23

> Odesílatel: Jiří Semler <jsemler@stbk.mcs.cz>
> > ClientDataSource.Delete;
> > ClientDataSource.Post;

> Zkus pouzit ClientDataSet.Edit;
Ne.
Delete je bez Post. Po Delete zustane ClientDataSet.Status=dsBrowse.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================

Odpovedá: ing. Jan Fiala

19. 9. 2002 19:09

19.9.2002 Jan Sebelík:
>> Odesílatel: Jiří Semler <jsemler@stbk.mcs.cz>
>> > ClientDataSource.Delete;
>> > ClientDataSource.Post;

>> Zkus pouzit ClientDataSet.Edit;
> Ne.
> Delete je bez Post. Po Delete zustane ClientDataSet.Status=dsBrowse.

Problem bude spis v neaktualizovatelnem SQL dotazu.
Co kdybys misto takovych krkolomnych konstrukci pouzil k vymazu primo
SQL dotaz: Delete From ....

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

Odpovedá: Jan Sebelík

20. 9. 2002 15:26

> >> > ClientDataSource.Delete;

> Odesílatel: ing. Jan Fiala <jan.fiala@iol.cz>
> Problem bude spis v neaktualizovatelnem SQL dotazu.
> Co kdybys misto takovych krkolomnych konstrukci pouzil k vymazu primo
> SQL dotaz: Delete From ....

Jo, proc ne, souhlas, ale mluvime-li o TClientDataSet, tak zpravidla nemame
primy pristup do databaze, TClientDataSet nema "ExecSQL".

Navic "DataSet.delete" mi smaze prislusny zaznam z datasetu (tedy napr. z
gridu), kdezto "delete from" primo z databaze. (Pikantni by bylo, kdybych si
zaznam smazal v databazi a pak ho v TClientDataSet modifikoval.)

Neaktualizovatelny "select" (zpravidla z vice tabulek) je problem, ktery je
nutne resit (TUpdateObjecty, IBDataSet.ModifySQL, ...).

TClientDataSet ma jednu vyhodu. Protoze je vsechno v pameti, mohu si vetsinou
dovolit resit propojeni na "souvisejici" tabulky pres LookupField, takze se
vyhnu selectu z vice tabulek.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================
----------
> Odesílatel: ing. Jan Fiala <jan.fiala@iol.cz>
> Komu: delphi-l@clexpert.cz
> Předmět: Re: ClientDataSource
> Datum: 19. září 2002 20:08
>
> 19.9.2002 Jan Sebelík:
> >> Odesílatel: Jiří Semler <jsemler@stbk.mcs.cz>
> >> > ClientDataSource.Delete;
> >> > ClientDataSource.Post;
>
> >> Zkus pouzit ClientDataSet.Edit;
> > Ne.
> > Delete je bez Post. Po Delete zustane ClientDataSet.Status=dsBrowse.
>
> Problem bude spis v neaktualizovatelnem SQL dotazu.
> Co kdybys misto takovych krkolomnych konstrukci pouzil k vymazu primo
> SQL dotaz: Delete From ....
>
> --
> ing. Jan Fiala
> mailto:jan.fiala@iol.cz

Odpovedá: LUKES Václav

20. 9. 2002 12:42






-----Original Message-----
From: ing. Jan Fiala [mailto:jan.fiala@iol.cz]
Sent: Thursday, September 19, 2002 8:08 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource


19.9.2002 Jan Sebelík:
>> Odesílatel: Jiří Semler <jsemler@stbk.mcs.cz>
>> > ClientDataSource.Delete;
>> > ClientDataSource.Post;

>> Zkus pouzit ClientDataSet.Edit;
> Ne.
> Delete je bez Post. Po Delete zustane ClientDataSet.Status=dsBrowse.

Problem bude spis v neaktualizovatelnem SQL dotazu.
Co kdybys misto takovych krkolomnych konstrukci pouzil k vymazu primo
SQL dotaz: Delete From ....

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

Odpovedá: LUKES Václav

20. 9. 2002 13:42

Diky za rady, ale nedari se...

Pokusl jsem se tedy pouzit SQLQuety. Spojil jsem komponenty

SQLConnection
SQLQuery
DataSource

Potom jsem chtel data zobrazit v mrizce, v DBGridu, ale jakmile b DBGridu u
DataSource chci dat DataSource z SQLQuery, dostanu tuhle chybu:

Operation not allowed on a unidirectional dataset.

Prosim vo co go ???

U BDE mi to krasne funguje, jak a co ale spojit u dbExpressu ???

V.









-----Original Message-----
From: ing. Jan Fiala [mailto:jan.fiala@iol.cz]
Sent: Thursday, September 19, 2002 8:08 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource


19.9.2002 Jan Sebelík:
>> Odesílatel: Jiří Semler <jsemler@stbk.mcs.cz>
>> > ClientDataSource.Delete;
>> > ClientDataSource.Post;

>> Zkus pouzit ClientDataSet.Edit;
> Ne.
> Delete je bez Post. Po Delete zustane ClientDataSet.Status=dsBrowse.

Problem bude spis v neaktualizovatelnem SQL dotazu.
Co kdybys misto takovych krkolomnych konstrukci pouzil k vymazu primo
SQL dotaz: Delete From ....

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

Odpovedá: Jan Sebelík

20. 9. 2002 15:44

> Odesílatel: LUKES Václav <lukes@ans.cz>
> Potom jsem chtel data zobrazit v mrizce, v DBGridu, ale jakmile b DBGridu u
DataSource chci dat DataSource z SQLQuery, dostanu tuhle chybu:

> Operation not allowed on a unidirectional dataset.

Veskere komponenty dbExpress jsou pouze unidirectional, takze prakticky nejsou
pouzitelne.
Ani v dridu, ani pro update, ani pro vyhledavani, ani pro filter.
Pouze "while not eof do dejmidata".
Jsou proto pouzitelne pouze ve spojeni s TDataSetProvider a TClientDataSet.

Pak je v dbExpress jeste komponenta TSQLClientDataSet, ktera toto propojeni
interne realizuje.
Osobne bych ji moc nedoporucoval a radsi bych si to propojeni udelal sam.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================

Odpovedá: LUKES Václav

23. 9. 2002 11:04

Ahoj Honzo,

ja mam na formu tyto komponenty:

SQLConnection
SQLDataSet
DataSetProvider
ClientDataSet
DataSource

a mrizku - DBGrid.

Propojim to a v DBGridu mam data. OK. ted chci ale treba udelat Update na
datech, ne ale v mrizce, ale pomoci SQLka. A tady jsem out...

V.







-----Original Message-----
From: Jan Sebelík [mailto:honza@haes.cz]
Sent: Friday, September 20, 2002 3:43 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource


> Odesílatel: LUKES Václav <lukes@ans.cz>
> Potom jsem chtel data zobrazit v mrizce, v DBGridu, ale jakmile b DBGridu u
DataSource chci dat DataSource z SQLQuery, dostanu tuhle chybu:

> Operation not allowed on a unidirectional dataset.

Veskere komponenty dbExpress jsou pouze unidirectional, takze prakticky nejsou
pouzitelne.
Ani v dridu, ani pro update, ani pro vyhledavani, ani pro filter.
Pouze "while not eof do dejmidata".
Jsou proto pouzitelne pouze ve spojeni s TDataSetProvider a TClientDataSet.

Pak je v dbExpress jeste komponenta TSQLClientDataSet, ktera toto propojeni
interne realizuje.
Osobne bych ji moc nedoporucoval a radsi bych si to propojeni udelal sam.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================

Odpovedá: LUKES Václav

23. 9. 2002 12:42

Co tedy pouzit pro "datarinu" ???
BDE jde do hrobu, dbExpress je k nepoužití... ADO ???
V.






-----Original Message-----
From: Jan Sebelík [mailto:honza@haes.cz]
Sent: Friday, September 20, 2002 3:43 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource


> Odesílatel: LUKES Václav <lukes@ans.cz>
> Potom jsem chtel data zobrazit v mrizce, v DBGridu, ale jakmile b DBGridu u
DataSource chci dat DataSource z SQLQuery, dostanu tuhle chybu:

> Operation not allowed on a unidirectional dataset.

Veskere komponenty dbExpress jsou pouze unidirectional, takze prakticky nejsou
pouzitelne.
Ani v dridu, ani pro update, ani pro vyhledavani, ani pro filter.
Pouze "while not eof do dejmidata".
Jsou proto pouzitelne pouze ve spojeni s TDataSetProvider a TClientDataSet.

Pak je v dbExpress jeste komponenta TSQLClientDataSet, ktera toto propojeni
interne realizuje.
Osobne bych ji moc nedoporucoval a radsi bych si to propojeni udelal sam.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================

Odpovedá: delfi

23. 9. 2002 14:35

Hi, pouzivam to stejne jako ty. Napsal jsem si unit, ktery z TClientDataSetu
generuje sql dotazy na insert, update...
ales


----- Original Message -----
From: "LUKES Václav" <lukes@ans.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, September 23, 2002 11:02 AM
Subject: RE: ClientDataSource


Ahoj Honzo,

ja mam na formu tyto komponenty:

SQLConnection
SQLDataSet
DataSetProvider
ClientDataSet
DataSource

a mrizku - DBGrid.

Propojim to a v DBGridu mam data. OK. ted chci ale treba udelat Update na
datech, ne ale v mrizce, ale pomoci SQLka. A tady jsem out...

V.







-----Original Message-----
From: Jan Sebelík [mailto:honza@haes.cz]
Sent: Friday, September 20, 2002 3:43 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource


> Odesílatel: LUKES Václav <lukes@ans.cz>
> Potom jsem chtel data zobrazit v mrizce, v DBGridu, ale jakmile b DBGridu
u DataSource chci dat DataSource z SQLQuery, dostanu tuhle chybu:

> Operation not allowed on a unidirectional dataset.

Veskere komponenty dbExpress jsou pouze unidirectional, takze prakticky
nejsou pouzitelne.
Ani v dridu, ani pro update, ani pro vyhledavani, ani pro filter.
Pouze "while not eof do dejmidata".
Jsou proto pouzitelne pouze ve spojeni s TDataSetProvider a TClientDataSet.

Pak je v dbExpress jeste komponenta TSQLClientDataSet, ktera toto propojeni
interne realizuje.
Osobne bych ji moc nedoporucoval a radsi bych si to propojeni udelal sam.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================

Odpovedá: LUKES Václav

23. 9. 2002 15:41

Ja jsem z toho out. Bylo mi receno, ze pouzivat BDE je nesmysl. Dobra, je tu
dbExpress. Ale jak s nim jednoduse pracovat ? Potrebuju data insertovat, menit
a mazat...

Trapne jsem si myslel, ze pouziju SQLQuery. To mi jde, ale prijde mi to pekna
cunarna. Copak to nejde udelat podobne, jako v BDE, kde mi stacil Connect a Sql
???

V.







-----Original Message-----
From: delfi [mailto:delfi@pocitac.net]
Sent: Monday, September 23, 2002 12:56 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource


Hi, pouzivam to stejne jako ty. Napsal jsem si unit, ktery z TClientDataSetu
generuje sql dotazy na insert, update...
ales


----- Original Message -----
From: "LUKES Václav" <lukes@ans.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, September 23, 2002 11:02 AM
Subject: RE: ClientDataSource


Ahoj Honzo,

ja mam na formu tyto komponenty:

SQLConnection
SQLDataSet
DataSetProvider
ClientDataSet
DataSource

a mrizku - DBGrid.

Propojim to a v DBGridu mam data. OK. ted chci ale treba udelat Update na
datech, ne ale v mrizce, ale pomoci SQLka. A tady jsem out...

V.







-----Original Message-----
From: Jan Sebelík [mailto:honza@haes.cz]
Sent: Friday, September 20, 2002 3:43 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource


> Odesílatel: LUKES Václav <lukes@ans.cz>
> Potom jsem chtel data zobrazit v mrizce, v DBGridu, ale jakmile b DBGridu
u DataSource chci dat DataSource z SQLQuery, dostanu tuhle chybu:

> Operation not allowed on a unidirectional dataset.

Veskere komponenty dbExpress jsou pouze unidirectional, takze prakticky
nejsou pouzitelne.
Ani v dridu, ani pro update, ani pro vyhledavani, ani pro filter.
Pouze "while not eof do dejmidata".
Jsou proto pouzitelne pouze ve spojeni s TDataSetProvider a TClientDataSet.

Pak je v dbExpress jeste komponenta TSQLClientDataSet, ktera toto propojeni
interne realizuje.
Osobne bych ji moc nedoporucoval a radsi bych si to propojeni udelal sam.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================

Odpovedá: Jan Grman

23. 9. 2002 16:00


> Ja jsem z toho out. Bylo mi receno, ze pouzivat BDE je nesmysl. Dobra, je
tu dbExpress. Ale jak s nim jednoduse pracovat ? Potrebuju data insertovat,
menit a mazat...
> Trapne jsem si myslel, ze pouziju SQLQuery. To mi jde, ale prijde mi to
pekna cunarna. Copak to nejde udelat podobne, jako v BDE, kde mi stacil
Connect a Sql ???

http://gethelp.devx.com/techtips/delphi_pro/10min/10min0701/10min0701-1.asp
http://gethelp.devx.com/techtips/delphi_pro/10min/10min0501/10min0501-1.asp
http://community.borland.com/article/0,1410,22495,00.html

Pekny den
jg

Odpovedá: LUKES Václav

24. 9. 2002 9:02

Diky,

dobra, pro praci s daty mi staci SQLConnection a SQLQuery.
Ale co musim pouzit pro zobrazeni dat treba v DBGridu ???

V.




-----Original Message-----
From: Jan Grman [mailto:J.Grman@kmer.elf.stuba.sk]
Sent: Monday, September 23, 2002 4:56 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource



> Ja jsem z toho out. Bylo mi receno, ze pouzivat BDE je nesmysl. Dobra, je
tu dbExpress. Ale jak s nim jednoduse pracovat ? Potrebuju data insertovat,
menit a mazat...
> Trapne jsem si myslel, ze pouziju SQLQuery. To mi jde, ale prijde mi to
pekna cunarna. Copak to nejde udelat podobne, jako v BDE, kde mi stacil
Connect a Sql ???

http://gethelp.devx.com/techtips/delphi_pro/10min/10min0701/10min0701-1.asp
http://gethelp.devx.com/techtips/delphi_pro/10min/10min0501/10min0501-1.asp
http://community.borland.com/article/0,1410,22495,00.html

Pekny den
jg

Odpovedá: Jan Sebelík

24. 9. 2002 16:16

> Odesílatel: LUKES Václav <lukes@ans.cz>
> dobra, pro praci s daty mi staci SQLConnection a SQLQuery.
> Ale co musim pouzit pro zobrazeni dat treba v DBGridu ???
A jsme tam, kde jsme uz byli: jedine ClientDataSet.

Anebo, jak by asi poradil Zbysek  , data umistit do vlastnich objektu a na
DBControls zapomenout.
Pak mam vsechno uplne pod vlastni kontrolou. Je to ale pracnejsi.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================

Odpovedá: Milan Tomeš

25. 9. 2002 7:11

Coz je IMHO (s vyhledem do budoucna) daleko lepsi. Nejhorsi je udelat si
nejaky framework, ktery toto vsechno umi. Ja jsem si zakladni FW napsal
(vcetne jedne komponenty - editacniho pole) a ma to nekolik tisic radku
zdrojaku... Jeste mi chybi spousta komponent (combo box, grid atp...), ale
pouzitelne to je a nemam s tim nejake vyraznejsi problemy.

S pozdravem

Milan Tomes
mailto:milan.tomes@haida.cz

> Anebo, jak by asi poradil Zbysek  , data umistit do vlastnich
> objektu a na DBControls zapomenout.
> Pak mam vsechno uplne pod vlastni kontrolou. Je to ale pracnejsi.
>
> Honza

Odpovedá: Martin Schayna

25. 9. 2002 9:28

----- Original Message -----
From: "Milan Tomeš" <milan.tomes@haida.cz>
> Coz je IMHO (s vyhledem do budoucna) daleko lepsi. Nejhorsi je udelat si
> nejaky framework, ktery toto vsechno umi. Ja jsem si zakladni FW napsal
> (vcetne jedne komponenty - editacniho pole) a ma to nekolik tisic radku
> zdrojaku... Jeste mi chybi spousta komponent (combo box, grid atp...), ale
> pouzitelne to je a nemam s tim nejake vyraznejsi problemy.

A nebo implementovat TDataSet potomka, ktery s temi datovymi objekty
(business objekty) umi pracovat jakoby to byly zaznamy v tabulkach.
Pak lze vyuzit vsechen komfort data controls a take programovani GUI je
jednodussi -- programatori pracuji s tim co znaji TDataSource, TDBcokoliv
atd. Mame tak udelany framework a funguje to OK.

Martin Schayna